/*
 * @Author:
 * @Date:
 * @LastEditTime:
 * @FilePath:
 */

// 引入安装的signalr包
import { App } from "vue";
import * as signalR from "@microsoft/signalr";
const signal = new signalR.HubConnectionBuilder()
  // 服务器地址
  .withUrl(import.meta.env.VITE_APP_SIGNAR + "/chatHub")
  .build();

//  自动重连
async function start() {
  try {
    await signal.start();
    console.log("reconnected");
  } catch (err) {
    console.log(err);
    setTimeout(() => start(), 10000);
  }
}
// 启动signalr
start();
signal.onclose(async () => {
  await start();
});
// 将创建的signal赋值给Vue实例
export const SignalRPlugin = {
  // install方法的第一个参数是 Vue 构造器，第二个参数是一个可选的选项对象。
  install(app: App) {
    // 3.0的全局挂载
    app.config.globalProperties.signalr = signal;
  }
};

// 在Vue的生命周期Created函数中注册相关事件
// created(){
// 这里Show就是在服务端指定的Show的方法名称，这里是先清除，再加上
// this.signalr.off('Show');
// this.signalr.on('Show',res=>
//   //可以做相关业务逻辑
//   console.log('signalr 来了',res)
// })
// }
// 在Vue的生命周期函数mounted中进行连接
// mounted () {
//   this.signalr.start().then(() => {
//       console.log('连接');
//   })
// }
